/*********************************************************************************
 *      Copyright:  (C) 2025 YANG Studio
 *                  All rights reserved.
 *
 *       Filename:  fan.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(27/05/25)
 *         Author:  YANG JIAYU <yangjiayu@gmail.com>
 *      ChangeLog:  1, Release initial version on "27/05/25 18:58:18"
 *                 
 ********************************************************************************/
// fan.c - 风扇控制模块实现文件
#include "./BSP/FAN/fan.h"  // 包含风扇控制头文件

/**
 * @brief       初始化风扇控制IO口
 * @param       无
 * @retval      无
 */
void fan_init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};  // 定义GPIO初始化结构体并清零
    
    // 使能GPIO时钟
    FAN_GPIO_CLK_ENABLE();  // 通过宏定义使能风扇控制引脚的时钟
    
    // 配置GPIO参数
    GPIO_InitStruct.Pin = FAN_GPIO_PIN;          // 设置控制引脚
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 设置为推挽输出模式
    GPIO_InitStruct.Pull = GPIO_NOPULL;          // 不使用上下拉电阻
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 设置为低速输出
    HAL_GPIO_Init(FAN_GPIO_PORT, &GPIO_InitStruct);  // 初始化GPIO
    
    // 初始状态：关闭风扇
    fan_off();  // 调用风扇关闭函数设置初始状态
}

/**
 * @brief       打开风扇
 * @param       无
 * @retval      无
 */
void fan_on(void)
{
    // 输出低电平打开风扇（根据硬件设计决定电平）
    HAL_GPIO_WritePin(FAN_GPIO_PORT, FAN_GPIO_PIN, GPIO_PIN_RESET);
}

/**
 * @brief       关闭风扇
 * @param       无
 * @retval      无
 */
void fan_off(void)
{
    // 输出高电平关闭风扇（根据硬件设计决定电平）
    HAL_GPIO_WritePin(FAN_GPIO_PORT, FAN_GPIO_PIN, GPIO_PIN_SET);
}

